Range of Focus in an Augmented Reality Application

ABSTRACT

A computer-implemented augmented reality method includes receiving one or more indications, entered on a mobile computing device by a user of the mobile computing device, of a distance range for determining items to display with an augmented reality application, the distance range representing geographic distance from a base point where the mobile computing device is located. The method also includes selecting, from items in a computer database, one or more items that are located within the distance range from the mobile computing device entered by the user, and providing data for representing labels for the selected one or more items on a visual display of the mobile computing device, the labels corresponding to the selected items, and the items corresponding to geographical features that are within the distance range as measure from the mobile computing device.

TECHNICAL FIELD

This document relates to augmented reality applications and setting theinformation that is provided to a user of such applications.

BACKGROUND

Augmented reality applications allow a user to see a presentation of theworld augmented with or superimposed by computer-generated imagery. Theimagery may be graphical or textual. The presented world may bepresented directly to the user, such as when the user is looking througha display, and the imagery is applied to or projected on the display.The world may also be presented indirectly, such as when a user isnavigating previously captured images of the real world, rather than theworld that is presently in front of the user.

Augmented reality is now being implemented on mobile computing devicesthat include digital cameras. In such implementations, the view that iscurrently being captured by the camera can be displayed as a scene on ascreen of the mobile device, and data about items that are shown in thescene may have textual annotations added to them. Non-visible objectsmay also be represented by annotations. Thus, for example, a user in acity may hold their smart phone in front of them and may be shown thenames of restaurants around them. The information may change as a userspins, so that only restaurants that are in front of the user/device areshown. However, it can be difficult to determine precisely where theuser is aiming their device, because the camera may simultaneously showmultiple items, such as buildings, particularly when the items are atdifferent distances from he user and thus overlap within the device'sfield of view.

SUMMARY

This document discusses systems and techniques to let a user of anaugmented reality system discriminate among items that might be in afield of view of the user's computing device, such as a smart phone. Inparticular, a graphical control may be provided on a display of theapplication by which the user can define clipping planes that will beused to filter the items for which information is shown to the user. Theclipping planes may indicate a minimum distance under which the userdoes not want to see items and/or a maximum distance above which theuser does not want to see items. Thus, in the interface, a slider may beshown, with an index at its edge that represents various distances fromthe user in the virtual space of the augmented reality, and selectablesliding controls may be shown on the slider. The user can thus set therelevant distances by dragging the selectable sliding controls to theappropriate point on the slide. As a result, out of all the items thatmay currently be in front of the user in the virtual space, the userwill only be shown information about items that are located between thetwo specified clipping distances.

In one implementation, the user can set the clipping distance ordistances using motion of the computing device. For example, by tippingor flinging the device forward, the user may indicate an intent to havea selectable object slide upward and away from the user, and thus to setthe clipping distance farther from the user. In addition, the setting ofclipping distances may initially define a ring around the user that isbetween the selected distances, so that when the distances are set, therelevant items from that ring are retrieved from a distant serversystem. Only the items in front of the device, in the field of view,will be displayed, and other items will be swapped in as the deviceturns in a circle. In such a manner, the system can pre-fetchinformation and quickly update its display as the user moves in acircle.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features andadvantages will be apparent from the description and drawings, and fromthe claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual diagram showing the presentation of items in anaugmented reality application in response to user input of clippingdistances.

FIG. 2 is a schematic diagram of a system for interacting with a user byway of an augmented reality application on a mobile device.

FIG. 3 is a flow chart showing a process for selecting descriptive itemsthat fall within a geographic distance of a user in an augmented realityapplication.

FIG. 4 is a swim lane diagram showing actions performed by an exampleclient and server for controlling the display of augmented realityitems.

FIG. 5 is a flow diagram of actions taken in an augmented realitysystem.

FIG. 6 is a block diagram of computing devices that may be used toimplement the systems and methods described in this document, as eithera client or as a server or plurality of servers.

FIG. 7 is a conceptual diagram of a system that may be used to implementthe systems and methods described in this document.

DETAILED DESCRIPTION

Referring to FIG. 1, in accordance with some implementations, a system100 includes a mobile device 102. In the example shown, the mobiledevice 102 is a cellular phone. In other implementations, the mobiledevice 102 can be a personal digital assistant, a laptop computer, a netbook, a camera, a wrist watch, or another type of mobile electronicdevice. The mobile device 102 includes a camera (not shown) forcapturing images and a display screen 103 for displaying graphics,texts, and images. In the example depicted in FIG. 1, the display screen103 is a touch screen capable of receiving user input. For example, auser contacts the display screen 103 using a finger or stylus in orderto select items displayed by the display screen 103, enter text, orcontrol functions of the mobile device 102.

In the example depicted, the mobile device 102 is located within a home,facing a wall 104 of the home. The camera of the mobile device capturesimages of the wall 104 and displays the images on the display screen 103in real-time or near real-time. The mobile device 102 includesfunctionality for determining positional information. For example, themobile device 102 includes GPS functionality for determining ageographic location of the mobile device 102, a compass for determininga viewing direction of the camera, and an accelerometer for determininga vertical viewing angle of the camera. This information can be used todetermine locations that are within the viewing direction and angle ofthe camera.

In some implementations, positional information (i.e. location, viewingdirection, and vertical viewing angle information) is used to identifygeo-coded data associated with locations within relative proximity tothe mobile device 102. For example, a user of the mobile device 102enters a text string of “library.” The search string, along withpositional information obtained by the mobile device 102 can be used toidentify libraries that are located within general proximity of themobile device 102. In some implementations, the mobile device 102provides a distance control 106 for setting clipping areas. The clippingareas define a range of focus for identifying items of interest. In theexample shown, the distance control 106 is presented as a slider thatallows the user to select a minimum distance and a maximum distance. Forexample, a user can set a top slider to 20 miles and a bottom slider to0.3 miles to indicate that only geo-coded information associated withlocations that are greater than 0.3 miles from the mobile device 102 andless than 20 miles from the mobile device 102 should be identified. Inother implementations, the distance control 106 can take other forms.For example, the distance control 106 is placed at the top or bottom ofthe display screen 103. As another example, the distance control 106includes text fields for the user to manually enter minimum and maximumdistance values. As yet another example, the distance control 106 cantake the form of a first dial for indicating a minimum distance and asecond dial for indicating a maximum distance. In some implementations,the mobile device 102 allows the user to manually set minimum andmaximum distances using a map view. For example, a map 111 can bedisplayed on the display screen 103. The map includes a location icon112 indicating the current location of the mobile device 102 on the map111. The user can indicate sizes for a minimum distance bound 120 and amaximum distance bound 122. In some implementations, the user indicatesthe minimum and maximum distance bounds 120 and 122 by touching thedisplay screen 103. In some implementations, the user can use single ormulti-touch functionality of the display screen 103 to drag the minimumand maximum distance bounds 120 and 122 in order to increase or decreasethe size of the minimum and maximum distance bounds 120 and 122.

In some implementations, the mobile device 102 allows the user to changethe minimum and maximum distance bounds 120 and 122 by moving the mobiledevice 102. For example, a motion detection unit of the mobile device102 can allow the user to increase the maximum distance bound 122 byjerking the phone forward or decrease the maximum distance bound 122 byjerking the phone backward. As another example, the mobile device 102allows the user to increase the minimum distance bound 120 by jerkingthe phone to the left and decrease the minimum distance bound 120 byjerking the phone to the right. In some implementations, the mobiledevice 102 allows the user to switch between an augmented reality viewas shown in the example on the display screen 103, and a map view. Forexample, the mobile device 102 provides an icon on the display screen103. The user selects the icon to switch between the augmented realityview and the map view. As another example, the mobile device 102 allowsthe user to select a control key, or shake or move the mobile device 102in a specified manner in order to switch between the augmented realityview and the map view.

In the example shown, the user uses the distance control 106 to specifya minimum distance of 0.3 miles and a maximum distance of 20 miles touse when searching for geo-coded information. These minimum and maximumdistances are represented by the minimum and maximum distance bounds 120and 122 of the map 111. In some implementations, the mobile device 102accesses a database of geo-coded data stored on the mobile device 102and identifies all geo-coded data associated with locations that aregreater than 0.3 miles from the mobile device 102 and less than 20 milesfrom the mobile device 102. In other implementations, the mobile device102 sends positional information (e.g. location and viewing direction)and distance clipping information (e.g. minimum and maximum distances)to a remote computing device, such as a server. In such implementations,the remote computing device identifies geo-coded data that is associatedwith locations that are greater than 0.3 miles from the mobile device102 and less than 20 miles from the mobile device 102. Sending thepositional and distance clipping information to the remote computingdevice can lead to a greater number of geo-code pieces of data beingidentified since the remote computing device may have access to a largerdatabase of geo-coded data. The remote computing device can also performsearches (e.g. web searches) in order to identify addresses or locationsthat are within the specified ranges.

In some implementations, the mobile device 102 allows the user to entersearch strings or otherwise indicate search terms in order to identifygeo-coded data. For example, the user can enter a search string of“movies” in order to cause movie theaters and video rental stores withinthe specified range to be identified. As another example, the user canenter a string of “homes for sale” in order to cause real estatelistings within the specified range to be identified. As yet anotherexample, the user can indicate a category of geo-coded data from a listof categories. Categories can include, for example, fast foodrestaurants, fine dining restaurants, movie theaters, golf courses,airports, banks, ATMs, post offices, night clubs, hair salons, andretail stores. The mobile device 102 or remote computing device thenidentifies geo-located data that matches the indicated category and isassociated with a location within the specified range.

Still referring to FIG. 1, a user of the mobile device 102 sets minimumand maximum distance ranges using the distance control 106. The userfurther enters in a search string of “Pizza.” In this example, the rangeclipping of which results are returned occurs in two ways. The firsttype of range clipping is distance clipping. The minimum and maximumdistance bounds 120 and 122 indicated by the user are used to excludegeo-coded data associated with locations outside of the bounds. Thesecond type of range clipping is viewing direction clipping. Forexample, a compass of the mobile device 102 determines a viewingdirection within the horizontal plane for the camera of the mobiledevice 102. The viewing direction is indicated on the map 111 by thelocation icon 112 which takes the form of an arrow. The viewingdirection of the mobile device 102 pans out from the location icon 112to form a viewing cone. Geo-coded data associated with locations outsideof the viewing cone are excluded from the search. The edges of theviewing cone and the minimum and maximum distance bounds 120 and 122define a clipping area 118. The clipping area 118 defines the geographicarea for which geo-coded items are identified. Geo-coded data that isassociated with locations outside of the clipping area 118 is excluded.For example, a location 114 and a location 116 are identified asmatching the search criteria indicated by the user and being within theclipping area 118. A third location 124 matches the search criteria, butis not within the clipping area 118. The location 124 is thereforeexcluded from being identified as a desired result for the search.

In some implementations, annotations are generated in association withthe identified locations 114 and 116. The annotations are then presentedon the display screen 103 over real-time or near real-time imagescaptured by the camera of the mobile device 102 to indicate where thelocations 114 and 116 are located in spatial relation to the mobiledevice 102. For example, an annotating 108 is created for the location114 to indicate that the location 114 is a restaurant called “GorillaPizza” and that the location 114 is located approximately 0.3 miles fromthe mobile device 102. The annotation additionally displays a phonenumber for Gorilla Pizza. The annotation is placed on the display screen103 to represent the general direction of the location 114 to the user.In this example, the location 114 is generally in the leftward portionof the clipping area 118 with respect to the location icon 112 as shownon the map 111. This positional relationship to the mobile device 102 isrepresented on the display screen 103 by displaying the annotation 108on the left side of the display screen. In some implementations, theuser can select or otherwise indicate the annotation 108 in order tocause the mobile device 102 to place a call to Gorilla Pizza. In someimplementations, selecting the annotation 108 causes a landing page(e.g. a web page) associated with the location 114 to appear. Forexample, a web page for Gorilla Pizza is displayed when the annotation108 is selected. As another example, the landing page is list of searchresults using “Gorilla Pizza” as a search term. This can cause a list ofrestaurant reviews or other articles and listings associated withGorilla Pizza to be displayed. In some implementations, locationinformation is used to refine the search results displayed. For example,Gorilla Pizza may be a franchised chain restaurant. The search resultsdisplayed by the display screen 103 can be refined using the location ofthe mobile device 102 so that search results that are relevant to thisparticular location of Gorilla Pizza are displayed.

In some implementations, selecting the annotation 108 will causedirections from the current location of the mobile device 102 to thelocation 114 to be displayed. In some implementations, selecting theannotation 108 causes additional information about Gorilla pizza, such amenu or address, to be displayed. In some implementations, eachannotation displayed by the mobile device 102 is represented as a dot onthe display screen 103. Selecting one of the dots can cause a detailedannotation as shown in FIG. 1 to be displayed.

In the example shown, an annotation 110 is created in association withthe location 116. The annotation indicates that the location 116 is arestaurant called “Domino's Pizza” and is located approximately 5.5miles away. The annotation 116 also indicates a phone number for thelocation 116. The annotation 110 can be selected to cause actions tooccur as described above with reference to the annotation 108. Theannotation 110 is positioned on the display screen 103 to represent therelative position of the location 116 with relation to the position ofthe mobile device 102 and the location 114. For example, the annotation110 is located above the annotation 108 to visually indicate that thelocation 116 is located further away from the mobile device 102 than thelocation 114. The annotation 110 is positioned to the right of theannotation 108 to indicate that the location 116 is located to the rightof the location 114 with respect to the current position of the mobiledevice 102.

In some implementations, the annotations 108 and 110 are created by theremote computing device. In such implementations, the remote computingdevice may further determine where the annotations are to be positionedon the display screen 103 using positional information received from themobile device 102 and location information associated with each of thelocations 114 and 116. The remote computing device then transmits theannotations 108 and 110 and positioning information for the annotations108 and 110 to the mobile device 102. In some implementations, theannotations 108 and 110 are created by the remote computing device, butthe mobile device 102 determines where the annotations are to bepositioned on the display screen 103. In some implementations, theremote computing device sends information associated with the location114 and 116 to the mobile device 102, including information on thegeographic locations of the locations 114 and 116. The mobile device 102then uses this information to create the annotations 108 and 110 andposition the annotations 108 and 110 on the display screen 103.

Still referring to FIG. 1, in accordance with various implementations,distance clipping and viewing direction clipping can occur at differenttimes when geo-coded data is being identified. In some implementations,distance clipping and viewing direction clipping are performed bydifferent devices. For example, distance clipping is performed by theremote computing device while viewing direction clipping is performed bythe mobile device 102. In some implementations, the remote computingdevice receives search criteria, positional information and distanceclipping information from the mobile device 102. The remote computingdevice uses the positional information and the distance clippinginformation to determine the boundaries of the clipping area 118. Theremote computing device the uses the search criteria to identifies itemsof interest that are associated with locations within the clipping area118. The remote computing device can then identify informationassociated with the identified items of interest. For example, theremote computing device can identify business names associated withlocations within the clipping area 118 that meet the search criteria anduse the business names to perform web searches and identify additionalinformation about the businesses. The remote computing device thensupplies information associated with the identified items of interest tothe mobile device 102. The mobile device 102 displays the receivedinformation as annotations on the display screen 103 as described above.

In such implementations, when a user of the mobile device 102 swivelsthe mobile device 102 and causes the viewing direction of the camera ofthe mobile device 102 to change, the mobile device 102 sends a newrequest for items of interest to the remote computing device. The newrequest for items of interest can include the location and viewingdirection of the mobile device 102 as well as minimum and maximumclipping distances and search criteria. The remote computing device thendetermines a new clipping area for the new viewing direction andidentifies items of interest associated with locations within the newclipping area based on the search criteria. The remote computing devicesupplies information associated with the newly identified items ofinterest to the mobile device 102 to be displayed as annotations on thedisplay screen 103. In some implementations, a new request for items ofinterest is sent to the remote computing device when ever the locationof the mobile device 102 changes or when the user changes the minimumand maximum clipping distances.

In other implementations, the mobile device 102 provides the remotecomputing device with search criteria, location information, and valuesfor the minimum and maximum distance bounds 120 and 122, but does notprovide viewing direction information to the remote computing device. Insuch instances, the remote computing device identifies locations thatare located between the minimum and maximum distance bounds 120 and 122that satisfy the specified search criteria, without regard to a viewingdirection of the mobile device 102. In other words, the remote computingdevice performs distance clipping functions but does not perform viewingdirection clipping functions. In the example shown, the user of themobile device 102 has entered a search string of “Pizza.” The remotecomputing device receives indications of the minimum and maximumdistance bounds 120 and 122 and the location of the mobile device 102along with the search string from the mobile device 102. The remotecomputing device identifies locations 114, 116, and 124 as satisfyingthe search criteria and being located between the minimum and maximumdistance bounds 120 and 122. The remote computing device identifiesinformation associated with the locations 114, 116, and 124 as describedabove and provides the information to mobile device 102. In someinstances, the remote computing device creates annotations usinginformation associated with the locations 1147, 116, and 124 andprovides the annotations to the mobile device 102.

In such implementations, the mobile device 102 receives the informationassociated with the locations 114, 116, and 124 and performs viewingdirection clipping to determine which of the locations 114, 116, and 124are currently within the viewing direction of the mobile device 102. Inthe example shown, the locations 114 and 116 are within the viewingdirection of the mobile device 102. The mobile device 102 thereforedisplays annotations 108 and 110 associated with the locations 114 and116 but does not display an annotation associated with the location 124.Implementations in which distance clipping functions are performed bythe remote computing device and viewing direction clipping functions areperformed by the mobile device 102 can prove beneficial by reducing thenumber of request for items of interest that are sent to the remotecomputing device, thereby reducing the total communication trafficbetween the mobile device 102 and the remote computing device. This isespecially true in situations in which a user of the mobile device ismore likely to change viewing directions of the mobile device 102 moreoften than the minimum and maximum clipping distances are changed. Forexample, the user of the mobile device 102 may slowly rotate in order toview items of interest in every direction. As the viewing direction ofthe mobile device 102 changes so that the location 124 is within theviewing direction of the mobile device 102, an annotation associatedwith the location 124 is displayed on the display screen 103. Since theinformation associated with the location 124 had already been receivedfrom the remote computing device, there is no need for the mobile device102 to send requests for new items of interest to the remote computingdevice as the mobile device 102 is rotated. The information associatedwith the location 124 is simply stored locally on the mobile device 102until the location 124 is within the viewing direction of the mobiledevice 102, at which time the annotation associated with the location124 is displayed.

In some implementations, the remote computing device identifieslocations of interest that are located within buffer regions locatedbeyond the minimum and maximum distance bounds 120 and 122. For example,the remote computing device defines buffer areas that extend to twomiles outside of the maximum distance bound 122 and to up to two mileswithin the minimum distance bound 120. The remote computing device thenidentifies locations of interest that match search criteria provided bythe mobile device 102 that are located between the minimum and maximumdistance bounds 120 and 122 or within one of the buffer areas. Theremote computing device provides information associated with theidentified locations of interest to the mobile device 102. The mobiledevice uses the actual minimum and maximum distance bounds specified bythe user to identify which of the received locations of interest arelocated between the minimum and maximum distance bounds 120 and 122, andwhich received locations of interest are located in the buffer areas.The mobile device 102 then only displays annotations that are locatedwithin the bounds specified by the user and in the viewing direction ofthe mobile device 102. In such implementations, if the user changeslocation, and therefore causes the mobile device 102 to change location,a location that had previously been located in one of the buffer areasmay now be located within the bounds specified by the user. Anannotation associated with the location can be displayed on the displayscreen 103 since the location is now within the bounds specified by theuser. This can since the information associated with the location hadalready been received and stored by the mobile device 102, the change oflocation of the mobile device 102 does not necessitate that a newrequest for locations of interest be sent to the remote computingdevice, until the mobile device 102 travels far enough so that the userdefined distance bounds extend beyond the previously established bufferareas.

Still referring to FIG. 1, in the example shown and described above, anaugmented reality application running on the mobile device 102 is usedto display information about locations within relative proximity to themobile device 102. In some implementations, the augmented realityapplication can be used to a reality that is separated from the locationof the mobile device 102. For example, a user of the mobile device 102can indicate a geographic location, for example by typing in an addressor selecting a spot on a map. The mobile device 102 can then access adatabase of street view images that have previously been captured at theindicated location. The user can rotate the mobile device 102 to look atimages taken from different viewing directions from the specifiedlocation. The user can also move the mobile device 102 in space in orderto cause the location represented on the display screen 103 to change.

In some implementations, the augmented reality application displaysannotations for locations within relative proximity to the identifiedlocation. For example, the user may be planning a trip to Marseille inFrance. The user can type in the address for the hotel at which he willbe staying. The user then uses the distance control 106 to specify aminimum distance bound of 0.0 miles and a maximum distance bound of 1.0miles. The user enters a search string of “breakfast” in order toidentify restaurants that server breakfast that are in walking distanceof the hotel. The user can rotate the mobile device 102 to causeannotations associated with locations matching the search and distancecriteria to be displayed over street level images taken from thespecified location. In this example, the user selects an annotation fora restaurant that serves breakfast and elects to view a map from thehotel to the restaurant. In some implementations, the mobile device 102communicates with a wireless network printer to allow the user to printthe map.

As another example, the user wishes to take a bike ride to a café whilestaying at the hotel. The user enters a search string of café and usesthe distance control 106 to indicate minimum and maximum distancebounds. The user indicates a minimum distance of 5.0 miles to ensurethat he gets adequate exercise during the bike ride, and a maximumdistance of 7.5 miles to make sure the bike ride isn't too long. Theuser can then rotate the mobile device 102 as described above in orderto cause annotations associated with locations that meet the search anddistance criteria overlaid on street level images associated with thelocation of the hotel to come into view.

Referring now to FIG. 2, in accordance with some implementations, acommunications system 200 includes a mobile device 202. In the exampleshown, the mobile device 202 is a cellular phone. In otherimplementations, the mobile device 202 can be a personal digitalassistant, a laptop computer, a net book, a camera, a wrist watch, oranother type of mobile electronic device. The mobile device 202 includesa camera (not shown) and a display screen 203 for displaying text,images, and graphics to a user, including images captured by the camera.In some implementations, the display screen 203 is a touch screen forreceiving user input. For example, a user contacts the display screen203 using a finger or stylus in order to select items displayed by thedisplay screen 203, enter text, or control functions of the mobiledevice 202. The mobile device 202 further includes one or more inputkeys such as a track ball 204 for receiving user input. For example, thetrack ball 204 can be used to make selections, return to a home screen,or control functions of the mobile device 202. As another example, theone or more input keys includes a click wheel for scrolling throughmenus and text.

The mobile device 202 includes a number of modules for controllingfunctions of the mobile device 202. The modules can be implemented usinghardware, software, or a combination of the two. The mobile device 202includes a display controller 206, which may be responsible forrendering content for presentation on the display screen 203. Thedisplay controller 206 may receive graphic-related content from a numberof sources and may determine how the content is to be provided to auser. For example, a number of different windows for variousapplications 222 on the mobile device 202 may need to be displayed, andthe display controller 206 may determine which to display, which tohide, and what to display or hide when there is overlap between variousgraphical objects. The display controller 206 can include variouscomponents to provide particular functionality for interacting withdisplayed components, which may be shared across multiple applications,and may be supplied, for example, by an operating system of the mobiledevice 202.

An input controller 208 may be responsible for translating commandsprovided by a user of mobile device 202. For example, such commands maycome from a keyboard, from touch screen functionality of the displayscreen 203, from trackball 204, or from other such sources, includingdedicated buttons or soft buttons (e.g., buttons whose functions maychange over time, and whose functions may be displayed on areas of thedisplay screen 203 that are adjacent to the particular buttons). Theinput controller 208 may determine, for example, in what area of thedisplay commands are being received, and thus in what application beingshown on the display the commands are intended for. In addition, it mayinterpret input motions on the touch screen 203 into a common format andpass those interpreted motions (e.g., short press, long press, flicks,and straight-line drags) to the appropriate application. The inputcontroller 208 may also report such inputs to an event manager (notshown) that in turn reports them to the appropriate modules orapplications. For example, a user viewing an options menu displayed onthe display screen 203 selects one of the options using one of the trackball 204 or touch screen functionality of the mobile device 202. Theinput controller 208 receives the input and causes the mobile device 202to perform functions based on the input.

A variety of applications 222 may operate, generally on a commonmicroprocessor, on the mobile device 202. The applications 222 may takea variety of forms, such as mapping applications, e-mail and othermessaging applications, image viewing and editing applications, videocapture and editing applications, web browser applications, music andvideo players, and various applications running within a web browser orrunning extensions of a web browser.

A wireless interface 220 manages communication with a wireless network,which may be a data network that also carries voice communications. Thewireless interface 220 may operate in a familiar manner, such asaccording to the examples discussed below, and may provide forcommunication by the mobile device 202 with messaging services such astext messaging, e-mail, and telephone voice mail messaging. In addition,the wireless interface 220 may support downloads and uploads of contentand computer code over a wireless network.

A camera controller 212 of the mobile device 202 receives image datafrom the camera and controls functionality of the camera. For example,the camera controller 212 receives image data for one or more images(e.g. stationary pictures or real-time video images) from the camera andprovides the image data to the display controller 206. The displaycontroller 206 then displays the one or more images captured by thecamera on the display screen 203. As another example, the cameraincludes physical zoom functionality. In this example, the cameracontroller 212 receives input from a user via the input controller 208and causes the camera to zoom in or out based on the user input. As yetanother example, the camera controller 212 controls auto focusfunctionality of the camera.

The mobile device 202 further includes an augmented reality application210. The augmented reality application 210 displays information andimages associated with locations within relative proximity of the mobiledevice 202. The information and images are displayed as annotationsoverlaid on top of real-time or pseudo real-time images captured by thecamera. For example, a user of the mobile device 202 directs the cameratowards a building. The camera controller 212 receives image data fromthe camera and provides the image data to the display controller 206.The display controller 206 causes the display screen 203 to displayimages of the building captured by the camera in real-time. Theaugmented reality application 210 communicates with the displaycontroller 206 to cause information associated with the building to bedisplayed on or near the real-time images of the building displayed onthe display screen 203. In some implementations, information associatedwith the building includes the name of the building, the address of thebuilding, businesses located within the building, or historicalinformation about the building.

Still referring to FIG. 2, in accordance with some implementations, theaugmented reality application 210 uses a GPS Unit 218 of the mobiledevice 202 to determine the location of the mobile device 202. Forexample, the GPS Unit 218 receives signals from one or more globalpositioning satellites. The GPS Unit 218 uses the signals to determinethe current location of the mobile device 202. In some implementations,rather than the GPS Unit 218, the mobile device 202 includes a modulethat determines a location of the mobile device 202 using transmissiontower triangulation or another method of location identification. Insome implementations, the mobile device 202 uses location informationthat is determined using the GPS Unit 218 to identify geo-codedinformation that is associated with the location of the mobile device202. In such implementations, location information obtained ordetermined by the GPS Unit 218 is provided to the augmented realityapplication 210. In some implementations, the augmented realityapplication 210 uses the location information to identify geo-coded data226 stored on the mobile device 202.

The geo-coded data 226 includes information associated with particulargeographic locations. For example, geo-coded data can include buildingnames, business names and information, historical information, images,video files, and audio files associated with a particular location. Asanother example, geo-coded data associated with a location of a park mayinclude hours for the park, the name of the park, information on plantslocated within the park, information on statues located within the park,historical information about the park, and park rules (e.g. “no dogsallowed”). The augmented reality application 210 can use the currentlocation of the mobile device 202 to identify information associatedwith geographic locations that are in close proximity to the location ofthe mobile device 202. In some implementations, the geo-coded data 226is stored on a memory of the mobile device 202, such as a hard drive,flash drive, or SD card. In some implementations, the mobile device 202may contain no pre-stored geo-coded data. In some implementations, noneof the geo-coded data 226 stored on the mobile device 202 is associatedwith locations within relative proximity to the current location of themobile device 202.

In some implementations, the augmented reality application 210 uses thewireless interface 220 to obtain geo-coded data from a remote server 232through a network 230. In such implementations, augmented realityapplication 210 provides the current location of the mobile device 202to the wireless interface 220 which in turn transmits the currentlocation to the remote server 232 through the network 230. The remoteserver 232 accesses a database of geo-coded data 234 and identifiesgeo-coded data associated with locations within a predeterminedproximity of the current location of the mobile device 202. For example,the remote server 232 may identify all geo-coded data 226 that isassociated with locations within five miles of the current location ofthe mobile device 202. The remote server 232 then returns the identifiedgeo-coded data to the mobile device 202 through the network 230.

The augmented reality application 210 utilizes a compass unit 216 of themobile device 202 to determine a current viewing direction, within thehorizontal plane, of the camera. In other words, the compass unit 216determines a direction in which a user of the mobile device 202 islooking while using the augmented reality application 210. Viewingdirection information provided by the compass unit 216 can be used todetermine a current viewing scope of the camera. In someimplementations, the augmented reality application 210 will provideviewing direction information obtained from the compass unit 216 to theremote server 232 using the wireless interface 220. In suchimplementations, the remote server 232 uses the viewing directioninformation to further narrow the amount of geo-coded data 234identified as relevant geo-coded data. For example, the remote server232 will identify only geo-coded data that are associated with locationswithin relative proximity to the current location of the mobile device202 and within a viewing scope defined by the viewing directioninformation as being relevant. The remote server 232 then transmits theidentified relevant geo-coded data to the mobile device 202.

In other implementations, the remote server 232 does not use viewingdirection information to determine relevant geo-coded data. In suchimplementations, the remote server 232 identifies geo-coded dataassociated with locations within relative proximity to the mobile device202. The mobile device 202 then stores the geo-coded data received fromthe remote server 232 as a portion of the geo-coded data 226. Theaugmented reality application 210 uses the current viewing directioninformation provided by the compass unit 216 to identify geo-coded datareceived from the remote server 232 that is within the current viewingscope of the camera. The augmented reality application 210 uses theidentified geo-coded data to create annotations and, in conjunction withthe display controller 206, overlays the annotations over real-time orpseudo real-time images captured by the camera and displayed on thedisplay screen 203. The augmented reality application 210 further usesthe viewing direction information and the location information todetermine positions on the screen where the annotations are to bepositioned. For example, the augmented reality application 210 usesgeo-coded data to generate several annotations which include businessnames and descriptions. The annotations are placed over images of thebuildings in which the businesses are located within the images capturedby the camera.

In some implementations, the mobile device 202 further includes anaccelerometer unit 214 for determining a vertical angle of the mobiledevice 202. In some implementations, vertical angle informationgenerated by the accelerometer unit 214 is provided to the remote server232 and used to further narrow the geo-coded data that is identified bythe remote server 232 and provided to the mobile device 202. In otherimplementations, the vertical angle information is used by the augmentedreality application 210 to identify geo-coded data that is currentlywithin the view of the camera from among a larger set of geo-locateddata provided by the remote server 232. In some implementations, theaugmented reality application 210 uses vertical angle information tomore accurately position annotations over images captured by the cameraand displayed on the display screen 203.

For example, a user may position the mobile device 202 so that thevertical viewing angle of the camera is generally horizontal. Theaugmented reality application 210 uses location, viewing direction, andvertical angle information to create annotations and place theannotations over images captured by the camera. Still following thisexample, the user then changes the vertical angle of the mobile device202 so that the camera is facing a direction that is 45 degrees abovehorizontal, without changing the geographic location or horizontalviewing direction of the mobile device 202. The change in vertical anglecan cause the augmented reality application 210 to change the positionof annotations on the display screen 203 as well as change whatannotations are displayed. For example, annotations associated withbuildings that are no longer in view after the vertical angle of themobile device 202 is changed can be removed from the display. As anotherexample, changing the vertical angle may cause additional buildings,such as sky scrapers, to come into view. The augmented realityapplication 210 can generate annotations based on geo-located dataassociated with the locations of the buildings and place the newlygenerated annotations on the display screen 203 over images of theadditional buildings.

The mobile device 202 optionally includes a range finding module 224 fordetermining the distance between the mobile device 202 and buildings orobjects depicted in images captured by the camera. For example, themobile device 202 can include a laser range finder for sending andreceiving laser pulses. The laser range finder sends a laser pulse whichcan reflect off of a building or object. The reflected laser pulse isthen received by the laser range finder. The range finding module 224can control the laser range finder and calculate the amount of timebetween when the laser pulse is sent and when the reflected laser pulseis received. This time differential can be used to calculate thedistance between the mobile device 202 and the building or object off ofwhich the laser pulse is reflected. In some implementations,triangulation, sonar, radar, stadiametric, or coincidence rangefinderscan be used to determine distance between the mobile device 202 andbuildings or objects within view of the camera.

In some implementations, the augmented reality application 210 usesdistance measurements provided by the range finding module 224 alongwith location, viewing direction, and vertical angle data to moreaccurately determine which objects and buildings are within the view ofthe camera. For example, the augmented reality application 210 can usedistance measurement information to determine the geographic location ofa building within view of the camera, based on the location of themobile device 202. The augmented reality application 210 can then usethe geographic location of the building to request more accurategeo-coded data from the remote server 232 or to better filter geo-codeddata received from the remote server 232 to more accurately ensure thatonly data associated with the location of the building is shown asannotations over the building within images displayed on the displayscreen 203.

In some implementations, information about buildings, objects, orlocations that are not within immediate view of camera are displayed asannotations. For example, the only object within immediate view of thecamera may be a brick wall. The augmented reality application 210generates annotations for businesses, buildings, and locations that arewithin relative proximity to the mobile device 202 and in the viewingdirection of the mobile device 202, but not within the immediate view ofthe camera. The augmented reality application 210 can cause annotationsto be placed on the display screen 203 to indicate the generaldirections of the locations associated with the annotations. In someimplementations, the annotations can include distances to indicate howfar away particular businesses or locations are located. For example, anannotation can read “Metro: 0.8 miles” to indicate that a Metro stop is0.8 miles away in the general direction of where the annotation islocated on the screen. As another example, an annotation can read“Schaper Park: 1.1 miles” to indicate that Schaper Park is located 1.1miles away.

In some implementations, in addition to location or positional data, theaugmented reality application 210 can use search terms, key words, oruser preferences to identify geo-coded information to display asannotations. For example, a user can enter in a search string orotherwise indicate a search term of “pizza.” In some implementations,the augmented reality application 210 supplies the search string alongwith location and viewing direction data to the remote server 232. Theremote server then returns geo-coded data related to pizza places inrelative proximity to the mobile device 202 and within the viewingdirection of the mobile device 202. In other implementations, the mobiledevice 202 receives a large set of geo-coded data associated withlocations in relative proximity to the mobile device 202. The augmentedreality application 210 then uses the search string to identifygeo-coded data within the large set of geo-coded data that is associatedwith pizza places. The augmented reality application 210 can thengenerate annotations that include information about the pizza placeswhich can be displayed on the display screen 203. A user of the mobiledevice 202 can then select one of the annotations to bring up additionalinformation about the selected pizza place or to call the pizza place.

Still referring to FIG. 2, in accordance with some implementations, themobile device 202 includes user data 228. The user data 228 can includeuser preferences or other information associated with a user of themobile device 202. For example, the user data 228 can include a list ofcontacts. Some of the contacts may be associated with addresses. If anaddress associated with a contact is in relative proximity to the mobiledevice 202 and within the viewing range of the camera, the augmentedreality application 210 can provide an annotation showing informationabout the contact. For example, the augmented reality application 210can create an annotation that includes the text “Dave: work” to indicatethat the contact “Dave” has a work address within the viewing directionof the camera. Following this argument, the user can select a portion ofthe annotation displayed on the display screen 203 to bring upinformation about Dave, call Dave, or to generate a text message ore-mail addressed to Dave.

As another example, user data 228 includes notes or images created by auser and associated with a particular location. For example, the usercan use the camera to take a picture. The user than stores the pictureon the mobile device 202 and associates the picture with GPS coordinatesof where the picture was taken. The augmented reality application 210can later access the stored picture and display the picture as anannotation when the mobile device 202 is in relative proximity to thelocation associated with the picture and the location is within theviewing direction of the camera. As another example, the user can writenotes about a restaurant. The augmented reality application 210 canlater create and display an annotation which includes the notes aboutthe restaurant when the address of the restaurant is within relativeproximity to the mobile device 202 and within the viewing direction ofthe camera.

In some implementations, the user data 228 includes indications of userpreferences. For example, historical searching data associated with auser of the mobile device 202 may indicate that the user has an interestin museums and art. In this example, the augmented reality application210 elects to display geo-coded information related to museums, artgalleries, art stores, and public art (i.e. statues, murals, etc.) thatare within the viewing range of the mobile device 202 when the user hasnot indicated a specific search string. As another example, the userdata 228 may indicate a historical preference for Italian food. Theaugmented reality application 210 can create and present annotationsassociated with Italian restaurants within viewing range of the mobiledevice 202 when the user has not indicated a specific search string.

Still referring to FIG. 2, in accordance with some implementations, theaugmented reality application 210 provides a distance boundarycontroller to allow a user of the mobile device 202 to set minimum andmaximum distance boundaries. For example, the augmented realityapplication 210 causes the mobile device 202 to display a slidercontroller on the display screen 203. The user uses the slidercontroller to set minimum and maximum distance boundaries. The minimumand maximum distance boundaries define an area, with respect to thecurrent position of the mobile device 202, in which locations associatedwith geo-coded data are to be identified. For example, the user of themobile device 202 has agreed to meet a friend at a restaurant afterwork, but has forgotten the name of the restaurant. In this example, theuser believes that he will recognize the name of the restaurant if hesees it. The user uses touch screen functionality of the display screen203 to start the augmented reality application 210. The user knows thatthe restaurant is an upscale restaurant, is located in a generallynorthward direction of his current position, and is between a half mileand a mile away. The user sets the distance boundary controller of theaugmented reality application 210 to a minimum distance of 0.5 miles anda maximum distance of 1 mile so as to filter out non-relevant hits forrestaurants that are too close or too far away. By preventingnon-relevant hits from being displayed, the augmented realityapplication 210 makes it more likely that the user will notice anannotation associated with the desired restaurant location. The userselects a category filter of “fine dining.” The user faces in agenerally northward direction and rotates the mobile device 202 in orderto cause annotations associated with locations that meet the defineddistance and category criteria to come into view. As the user rotatesthe mobile device 202, an annotation for a restaurant called “Solera”appears on the display screen 203. The user recognizes the location asthe restaurant that the friend had suggested.

Continuing with this example, the annotation, can include additionalinformation about the restaurant, such as an address, or phone number.Selecting the annotation can cause additional information associatedwith the restaurant or a landing page associated with the restaurant toappear. For example, in one instance, the user can hail a cab and tellthe cab driver to take him to the address indicated by the annotation.The user then selects the annotation to cause a web page for therestaurant to appear. The user can review the menu in order to decide onwhat to order once he arrives. In another instance, if the user isrunning late, the user can select the annotation in order to cause themobile device 202 to place a phone call to the restaurant. The user cantell the person who answers the phone to inform his friend that he isrunning late. In another instance, the user can start walking towardsthe general direction of the restaurant as indicated by the annotationas it is displayed over real-time or near real-time images of the user'sactual surroundings. In still another instance, the user selects theannotation to cause a map showing directions from the user's currentlocation to the restaurant. The user can elect to view walkingdirections and follow the directions in order to get to the restaurant.

Still following this example, upon arriving at the restaurant, the userrealizes that he is short on cash. The user uses the distance boundarycontroller to reset the minimum distance to 0.0 miles and the maximumdistance to 0.2 miles. The user then indicates a category of “ATM” androtates the mobile device 202 in order to identify nearby ATMs.Annotations associated with ATMs within 0.2 miles of the mobile device202 can indicate the banks which own the ATMs and the distance of theATMs from the mobile device 202. The user identifies an ATM that willnot charge him a fee that is indicated as being 500 feet away. The userwalks in the direction of the ATM as indicated by the position of anannotation associated with the ATM as displayed on the display screen203.

As another example, a user of the mobile device 202 moves to a new cityand is looking for a job. The user does not own a car and does not liveclose to a public transit stop. Therefore, the user decides to look fora job within reasonable walking distance of her apartment, but wouldalso like to get exercise when walking to work, so she's interested infinding a job that is at least a half mile away. The user starts theaugmented reality application 210 and uses the distance boundarycontroller to set a minimum distance of 0.5 miles and a maximum distanceof 1.5. The user then enters a search string, or otherwise indicates asearch for job listings. The user rotates the mobile device 202 in orderto cause annotations associated with locations that meet the specifieddistance and search criteria. In some implementations, the mobile device202 allows the user to bookmark or store annotations for jobs that soundinteresting. The user can also select annotations in order to cause ane-mail addressed to the hiring director for the related job posting tobe generated. The user can then send an e-mail expressing her interestin the position to the hiring director. In some instances, if the userdoes not see any jobs that seem interesting, the user can increase themaximum distance or decrease the minimum distance in order to cause moreor different annotations associated with different job postings to bedisplayed on the display screen 203.

FIG. 3 shows a flow chart for a process 300 of selecting descriptiveitems that fall within a geographic distance of a user in an augmentedreality application. The process 300 uses minimum and maximum distanceboundary values received from a user of a client device to identifygeo-coded data items associated with locations that are within thedistance boundaries. Annotations are created based on the geo-coded dataitems and displayed to the user.

Step 302 of the process 300 launches the augmented reality application.For example, referring to FIG. 1, a user of the mobile device 102 canuse touch screen functionality of the display screen 103 to scrollthrough a list of applications and select an augmented realityapplication. This causes the mobile device 102 to execute the augmentedreality application.

Step 304 receives a user boundary input. For example, referring to FIG.1, the user uses the distance control 106 to indicate a minimum distanceboundary of 0.3 miles and a maximum distance boundary of 20 miles. Theuser adjusts upper and lower icons of the distance control 106 to definemaximum and minimum distance boundaries for the clipping area 118. Thespace between the icons corresponds to the distance between the minimumand maximum distance bounds 120 and 122. As another example, the usersets values for minimum and maximum distance boundaries using one ormore text fields. As yet another example, the user enters minimum andmaximum distance boundaries using a first dial to indicate a minimumdistance and a second dial to indicate a maximum distance. As anotherexample, the user manually sets minimum and maximum distances using amap view. Referring to FIG. 1, a map 111 can be displayed on the displayscreen 103. The user indicates sizes for the minimum distance bound 120and the maximum distance bound 122. In some implementations, the userindicates the minimum and maximum distance bounds 120 and 122 bytouching the display screen 103. In some implementations, the user usessingle or multi-touch functionality of the display screen 103 to dragthe minimum and maximum distance bounds 120 and 122 in order to increaseor decrease the size of the minimum and maximum distance bounds 120 and122.

In some implementations, a user changes minimum and maximum distanceboundaries by moving client device. For example, a motion detection unitof the client device allows the user to increase a maximum distancebound by twisting the client device in a clockwise direction or decreasethe maximum distance bound by twisting the client device in a counterclockwise direction. As another example, the user increases a minimumdistance bound a by flicking the client device forward and decreases theminimum distance bound by flicking the client device backward.

Step 306 identifies candidate results in a device field of view. Forexample, referring to FIG. 2, the mobile device 202 uses the GPS Unit218 to determine a geographic location of the mobile device 202. Themobile device can also use the compass unit 216 to determine a viewingdirection of the camera and the accelerometer unit 214 to determine avertical viewing angle of the camera. The general device positioninformation generated by one or more of these components can be used toidentify geo-coded data from the store of geo-coded data 226 that isassociated with locations within a viewing direction of the mobiledevice 202. In some implementations, the mobile device 202 transmitssome or all of the general device position information and the minimumand maximum distance boundary values to the remote server 232. Theremote server 232 then uses the general device position information toidentify geo-coded data from the store of geo-coded data 234 that isassociated with locations within a viewing direction of the mobiledevice 202. In some implementations, the remote server 232 identifiesgeo-coded data 234 that is associated with locations within in relativeproximity to the mobile device 202. The remove server 232 sends theidentified geo-coded data to the mobile device 202 and the augmentedreality application 210 running on the mobile device 202 performs thesteps of determining which pieces of geo-coded data are associated withlocations within the current viewing direction of the mobile device 202.

In some implementations, some geo-coded data is stored at the remoteserver 232 and other geo-coded data is stored at the mobile device 202.For example, geo-coded information created by a user of the mobiledevice 202, or associated with the user (e.g. home address, addresses offavorite restaurants, etc.) may be stored on the mobile device 202 aspart of the geo-coded data 226 to facilitate ease of access to thegeo-coded data. Other, more general geo-coded data, such as businessnames and locations, may be stored by the remote server 232 as part ofthe geo-coded data 234. The more general geo-coded data may be stored bythe remote server 232 since there is a greater amount of generalgeo-coded data than user specific data. The more general geo-coded datamay also be stored by the remote server 232 because the more generalgeo-coded data is updated more frequently from various sources thanlocally stored, user specific geo-coded data.

Step 308 filters candidate results using the user indicated boundaries.For example, referring to FIG. 1, the mobile device 102 receivesinformation associated with locations that are within the viewingdirection of the mobile device 102. The mobile device 102 uses theminimum and maximum distance boundary values indicated by the user toidentify the minimum and maximum distance bounds 120 and 122 as shown onthe map 111. The mobile device 102 then filters out candidate resultsthat are associated with locations within the minimum distance bound 120or beyond the maximum distance bound 122. In some implementations, themobile device 102 receives information associated with locations withingeneral proximity to the mobile device 102 in all directions. In suchimplementations, the mobile device 102 uses viewing direction data andthe minimum and maximum distance bounds 120 and 122 to identify theclipping area 118. The mobile device 102 then identifies candidateresults that are associated with locations within the clipping area 118.

Step 310 determines the content and position of results on a display ofthe client device. For example, referring to FIG. 1, the annotation 110is positioned above the annotation 108 to indicate that the location 116is located a further distance from the mobile device 102 than thelocation 114. As another example, the annotation 108 is positioned tothe left of the annotation 110 to indicate that the location 114 ispositioned to the left of the location 116 with respect to the mobiledevice 102. In some implementations, semi-transparent, three-dimensionalview is overlaid on top of real-time or near real-time images displayedon the display screen. The mobile device 102 can determine where toposition annotations or indications of annotations on the display screen103 in order to indicate spatial relationships between the locationsassociated with the annotations and the location of the mobile device102.

Additionally, the mobile device 102 determines content to include in theannotations 108 and 110. In some implementations, each annotation isrepresented by a dot on the screen. A user selects a dot in order tocause information associated with an identified location to bedisplayed. In some implementations, each annotation contains basicinformation about a location, such as a name of the location, a name ofone or more business located at the location, a phone number for thelocation, or an address for the location. In some implementations,selecting an annotation causes additional information to be displayed.In some implementations, selecting an annotation causes a landing pageassociated with the annotation to be displayed. In some implementations,selecting an annotations causes the mobile device 102 to initiate atelephone call, an e-mail, or a text message. In some implementations,the information included in an annotation is based on user preferences.For example, referring to FIG. 2, the user data 228 stored on the mobiledevice 202 includes information on annotation display preferences of theuser. As one example, the user may indicate that annotations shouldcontain building or business names and no other information. As anotherexample, the user may indicate that annotations are to include a phonenumber, and a distance away in miles for an associated location. As yetanother example, the user may indicate that annotates are to include anindication of customer ratings or reviews for an identified location(e.g. a star rating for restaurants). In some implementations,annotations include notes or text previously entered by the user andassociated with a location. In some implementations, annotations includeimages. For example, an annotation may include an image of a building ora logo associated with a business.

Step 312 displays results. For example, referring to FIG. 1, theannotations 108 and 110 are displayed on the display screen 103. Theannotations 108 and 110 are positioned on the screen as determined atstep 310 and contain information as determined at step 310. In someimplementations, the user can elect to change the presentation ofdisplayed results. For example, the mobile device 102 may allow the userto switch between a map view, a three dimensional landscape view, and anaugmented reality view in which annotations are displayed over real-timeor near real-time images captured by the camera of the mobile device102.

In some implementations, the steps of the process 300 can be performedin a different order than that shown. For example, the content ofresults can be determined before candidate results are filtered usingboundaries. As another example, candidate results can be filtered usingminimum and maximum distance boundaries before the viewing direction ofthe client device is used to determine locations within the field ofview of the client device.

FIG. 4 is a swim lane diagram 400 showing actions performed by anexample client device and server for controlling the display ofaugmented reality items. Step 402 receives user input on parameters. Forexample, a user of the client device may enter minimum and maximumdistance boundaries for identifying locations within proximity to theclient device. As another example, the client device allows the user tospecify the width of viewing direction (e.g. panoramic view, regularview, etc.). In some implementations, parameters are entered by the userusing a distance boundary controller, such as a slider control, or oneor more dial controls. In some implementations, the step of receivinguser input parameters includes receiving an indication of searchcriteria. For example, a user can enter a search string of “car wash” orthe user can select a category of “hotels” from a list of categories. Insome implementations, the user input is received from the user via inputfunctionality of the client device. In some implementations, some or allof the user input is received from a data base of user information. Thedata base of user information can be stored locally on the client deviceor stored remotely on one or more remote servers which can be accessedby the client device. In some implementations, the user input is enteredremotely.

Step 404 identifies device orientation and clipping bounds. For example,referring to FIG. 2, the mobile device 202 uses the GPS Unit 218 todetermine a geographic location of the mobile device 202. The mobiledevice uses the compass unit 216 to determine a viewing direction of thecamera and the accelerometer unit 214 to determine a vertical viewingangle of the camera. The general device location and orientationinformation generated by one or more of these components as well as theminimum and maximum distance boundaries identified by the user at step402 are used to identify a bounding polygon that defines the area withina viewing direction of the camera of the mobile device 202 andin-between the minimum and maximum distance boundaries specified by theuser.

Step 406 submits a request for matching items. For example, referring toFIG. 2, the mobile device 202 transmits some or all of the generaldevice location and orientation information and the user specifiedminimum and maximum distance boundary values to the remote server 232.The mobile device 202 also provides the user specified search criteriato the remote server 232. In some implementations, rather than supplyingpositional and orientation information to the server, the client deviceprovides an indication of the bounding polygon to the server. The mobiledevice 202 requests information associated with locations located withinthe identified bounding polygon that meet the specified search criteria.

Step 408 runs a search on a viewport and bounding polygon. In someimplementations, the viewport is the area within the viewing directionof a camera of the client device. The bounding polygon is the regiondefined by the viewport and the minimum and maximum distance boundaries.In some implementations, the bounding polygon is defined by the clientdevice. In some implementations, the server receives location, viewingdirection, and vertical viewing angle information from the client devicealong with minimum and maximum distance boundary information. In suchimplementations, the server uses the received information to identifythe bounding polygon. The server performs a search to identify geo-codeddata associated with locations within the bounding polygon. In someimplementations, the server only identifies geo-coded data associatedwith locations within the bounding polygon that also match searchcriteria received from the client device. The server can performsearches on geo-coded data stored on the server, or stored on othernetwork devices. For example, upon identifying a location within thebounding polygon, the server performs a web search in order to identifyadditional information about the location.

Step 410 returns content for results with location information. Forexample, referring to FIG. 1, the server identifies the locations 114and 116 as being within the clipping area 118 (i.e., the boundingpolygon) and as matching search criteria specified by the user of themobile device 102. The server identifies information associated with thelocation 114 and 116, for example, by performing web searches or byaccessing one or more stores of geo-coded data to identify pieces ofgeo-coded data associated with the locations 114 and 116. The serverthen provides details of the locations 114 and 116 (e.g. addresses,latitude and longitude coordinates, etc.) along with associatedinformation to the mobile device 102.

Step 412 displays content as annotations. In some implementations, theserver creates the annotations using the information and provides theannotations to the client device. In some such implementations, theserver also determines where the annotations are to be placed on adisplay screen of the client device. In some implementations, theannotations are created by the client device and placement of theannotations is determined by the client device. The annotations are thendisplayed on the display screen of the client device. For example,referring to FIG. 1, the annotations 108 and 110 are displayed on thedisplay screen 103 in order to convey information associated with thelocations 114 and 116. The placement of the annotations 108 and 110 onthe display screen 103 corresponds to the geographic relationshipbetween the location of the mobile device 102 and the locations 114 and116.

Step 114 receives a selection on an annotation. For example, the clientdevice may have touch screen functionality and the user selects anannotation using a stylus or by pressing a finger on the screen. Asanother example, a user uses a track ball of the client device to selectan annotation. The client device informs the server of the selection. Insome implementations, the client device informs a different, secondserver that an annotation has been selected and requests informationassociated with the annotation from the different, second server.

Step 416 returns a landing page for an organization that corresponds tothe selected annotation. For example, if the annotation is associatedwith a restaurant, the server returns a web page for the restaurant thatincludes information on the restaurant, such as hours of operation and amenu. As another example, selecting an annotation associated with arestaurant causes the server to return a landing page listing reviews ofthe restaurant posted by restaurant reviewers or other users. As anotherexample, selecting an annotation associated with Soldier Field may causethe server to return the website for the Chicago Bears, or a landingpage listing upcoming events occurring at Soldier Field.

Step 418 displays the landing page. In some implementations, the serverprovides the landing page to the client device and the client devicedisplays the landing page. In some implementations, the server providesa URL for the landing page and the client device uses the URL to requestthe landing page from a different server. The client device thendisplays the landing page. In some implementations, the client deviceallows the user to switch between the landing page, and an augmentedreality view by, for example, selecting an icon or pressing a controlkey.

FIG. 5 is a flow diagram 500 of actions taken in an augmented realitysystem. At stage 502, a change in position occurs. The change inposition can encompass a change in geographic location, a change inviewing direction, a change in a vertical viewing angle, or a change inany combination of these parameters. For example, a user with a mobiledevice running an augmented reality application is walking down a citystreet, thus causing the position of the mobile device to change. As theuser moves, the orientation of the mobile device (i.e. viewing directionwithin the horizontal plane and vertical viewing angle) may remain thesame or the orientation may also change.

At stage 504, a change in clipping value occurs. For example, referringto FIG. 1, a user of the mobile device 102 changes the clipping valuesby moving icons on the distance control 106 to define the minimum andmaximum distance bounds 120 and 122. In some implementations, a changein clipping value occurs in conjunction with a change in position. Insome implementations, a change in clipping value occurs while theposition of the client device remains unchanged.

At stage 506, a new field of view is computed. For example, in responseto a change in position, a change in clipping value, or both, the areaof interest for the client device changes. For example, referring toFIG. 1, reducing the maximum distance bound 122 will cause the clippingarea 118 to change, which will change the area of interest for geo-codedinformation. As another example, rotating the mobile device 102 willcause the clipping area 118 to rotate about the location icon 112.Changing the shape or position of the clipping area 118 will cause newitems of interest to come into the scope of the view of the mobiledevice 102. After a change in clipping values or a change in position,the client device calculates a new bounding polygon based on the newclipping values or the new positional data associated with the clientdevice.

At stage 508, new results are identified. For example, referring to FIG.1, if the mobile device 102 is rotated to the left, the clipping area118 will shift counter clockwise with relation to the location icon 112.This may cause the location 124 to be positioned in the new position ofthe clipping area 118. The location 124 can be identified as a newresult. As another example, when the bounding polygon is moved orresized, a new search is performed to identify items that match userspecified search criteria and are associated with locations within thenew bounding polygon. In some implementations, additional informationassociated with the identified items is identified (e.g. by performingdatabase or web searching)

At stage 510, results are displayed. For example, annotations arecreated based on information associated with newly identified items. Theannotations can be created by a server or by a mobile device. Placementinformation on where the annotations are to be positioned on a displayscreen are determined. The annotations are displayed on the displayscreen according to the placement information. In some implementations,the position of annotations on a display screen corresponds to thegeographic relationship between the location of the client device andlocations associated with the annotations. After results are displayed,a change in position or a change in clipping value may occur, causingstages 502 or 504 to occur.

At stage 512, a selection of a result is received. For example,referring to FIG. 1, a user of the mobile device 102 selects theannotation 108 by pressing on the display screen 103 with a stylus or afinger. As another example, the user selects the annotation 110 using atrack ball or input keys of the mobile device 102. In someimplementations, an indication of the selection is sent from a clientdevice to a server.

At stage 514 action is taken on the selected result. For example, aserver may receive an indication of the selection and return a landingpage associated with the selected annotation. As another example, when auser selects an annotation, the client device displays a map indicatinga route for getting from the current location of the client device tothe location associated with the annotation. As another example, theclient device may initiate a call, e-mail, or text message to a businessor individual associated with an annotation. As yet another example, auser may select an icon in order to cause the client device to switchbetween a map view, a three dimensional landscape view, and an augmentedreality view. Upon taking the action, the results of the action aredisplayed at stage 510.

FIG. 6 is a block diagram of computing devices 600, 650 that may be usedto implement the systems and methods described in this document, aseither a client or as a server or plurality of servers. Computing device600 is intended to represent various forms of digital computers, such aslaptops, desktops, workstations, personal digital assistants, servers,blade servers, mainframes, and other appropriate computers. Computingdevice 650 is intended to represent various forms of mobile devices,such as personal digital assistants, cellular telephones, smartphones,and other similar computing devices. Additionally computing device 600or 650 can include Universal Serial Bus (USB) flash drives. The USBflash drives may store operating systems and other applications. The USBflash drives can include input/output components, such as a wirelesstransmitter or USB connector that may be inserted into a USB port ofanother computing device. The components shown here, their connectionsand relationships, and their functions, are meant to be exemplary only,and are not meant to limit implementations described and/or claimed inthis document.

Computing device 600 includes a processor 602, memory 604, a storagedevice 606, a high-speed interface 608 connecting to memory 604 andhigh-speed expansion ports 610, and a low speed interface 612 connectingto low speed bus 614 and storage device 606. Each of the components 602,604, 606, 608, 610, and 612, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 602 can process instructions for executionwithin the computing device 600, including instructions stored in thememory 604 or on the storage device 606 to display graphical informationfor a GUI on an external input/output device, such as display 616coupled to high speed interface 608. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices600 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 604 stores information within the computing device 600. Inone implementation, the memory 604 is a volatile memory unit or units.In another implementation, the memory 604 is a non-volatile memory unitor units. The memory 604 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 606 is capable of providing mass storage for thecomputing device 600. In one implementation, the storage device 606 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 604, the storage device 606,or memory on processor 602.

The high speed controller 608 manages bandwidth-intensive operations forthe computing device 600, while the low speed controller 612 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 608 iscoupled to memory 604, display 616 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 610, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 612 is coupled to storage device 606 and low-speed expansionport 614. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 600 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 620, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 624. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 622. Alternatively, components from computing device 600 may becombined with other components in a mobile device (not shown), such asdevice 650. Each of such devices may contain one or more of computingdevice 600, 650, and an entire system may be made up of multiplecomputing devices 600, 650 communicating with each other.

Computing device 650 includes a processor 652, memory 664, aninput/output device such as a display 654, a communication interface666, and a transceiver 668, among other components. The device 650 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 650, 652,664, 654, 666, and 668, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 652 can execute instructions within the computing device650, including instructions stored in the memory 664. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. Additionally, the processor may beimplemented using any of a number of architectures. For example, theprocessor 410 may be a CISC (Complex Instruction Set Computers)processor, a RISC (Reduced Instruction Set Computer) processor, or aMISC (Minimal Instruction Set Computer) processor. The processor mayprovide, for example, for coordination of the other components of thedevice 650, such as control of user interfaces, applications run bydevice 650, and wireless communication by device 650.

Processor 652 may communicate with a user through control interface 658and display interface 656 coupled to a display 654. The display 654 maybe, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display)display or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 656 may compriseappropriate circuitry for driving the display 654 to present graphicaland other information to a user. The control interface 658 may receivecommands from a user and convert them for submission to the processor652. In addition, an external interface 662 may be provide incommunication with processor 652, so as to enable near areacommunication of device 650 with other devices. External interface 662may provide, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 664 stores information within the computing device 650. Thememory 664 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 674 may also be provided andconnected to device 650 through expansion interface 672, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 674 may provide extra storage space fordevice 650, or may also store applications or other information fordevice 650. Specifically, expansion memory 674 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 674may be provide as a security module for device 650, and may beprogrammed with instructions that permit secure use of device 650. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 664, expansionmemory 674, or memory on processor 652 that may be received, forexample, over transceiver 668 or external interface 662.

Device 650 may communicate wirelessly through communication interface666, which may include digital signal processing circuitry wherenecessary. Communication interface 666 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 668. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 670 mayprovide additional navigation- and location-related wireless data todevice 650, which may be used as appropriate by applications running ondevice 650.

Device 650 may also communicate audibly using audio codec 660, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 660 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 650. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 650.

The computing device 650 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 680. It may also be implemented as part of asmartphone 682, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), peer-to-peernetworks (having ad-hoc or static members), grid computinginfrastructures, and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

Referring now to FIG. 7, a conceptual diagram of a system that may beused to implement the systems and methods described in this document isillustrated. In the system, mobile computing device 710 can wirelesslycommunicate with base station 740, which can provide the mobilecomputing device wireless access to numerous hosted services 760 througha network 750.

In this illustration, the mobile computing device 710 is depicted as ahandheld mobile telephone (e.g., a smartphone, or application telephone)that includes a touchscreen display device 712 for presenting content toa user of the mobile computing device 710 and receiving touch-based userinputs. Other visual, auditory, and tactile output components may alsobe provided (e.g., LED lights, a speaker for providing tonal,voice-generated, or recorded output, or vibrating mechanisms for tactileoutput), as may various different input components (e.g., keyboard 714,physical buttons, trackballs, accelerometers, gyroscopes, andmagnetometers).

Example visual output mechanism in the form of display device 712 maytake the form of a 3.7 or 4.3 inch LED or AMOLED display with resistiveor capacitive touch capabilities, for displaying video, graphics,images, and text, and coordinating user touch inputs locationally withthe displayed information so that user contact above a displayed itemmay be associated with the item by the device 710. The mobile computingdevice 710 may take alternative forms also, including as a laptopcomputer, a tablet or slate computer, a personal digital assistant, anembedded system (e.g., a car navigation system), a desktop personalcomputer, or a computerized workstation.

An example mechanism for receiving user-input includes keyboard 714,which may be a full qwerty keyboard or a traditional keypad thatincludes keys for the digits ‘0-9’, ‘*’, and ‘#.’ The keyboard 714receives input when a user physically contacts or depresses a keyboardkey. User manipulation of a trackball 716 or interaction with a trackpadenables the user to supply directional and rate of rotation informationto the mobile computing device 710 (e.g., to manipulate a position of acursor on the display device 712).

The mobile computing device 710 may be able to determine a position ofphysical contact with the touchscreen display device 712 (e.g., aposition of contact by a finger or a stylus). Using the touchscreen 712,various “virtual” input mechanisms may be produced, where a userinteracts with a graphical user interface element depicted on thetouchscreen 712 by contacting the graphical user interface element. Anexample of a “virtual” input mechanism is a “software keyboard,” where akeyboard is displayed on the touchscreen and a user selects keys bypressing a region of the touchscreen 712 that corresponds to each key.

The mobile computing device 710 may include mechanical or touchsensitive buttons 718 a-d. Additionally, the mobile computing device mayinclude buttons for adjusting volume output by the one or more speakers720, and a button for turning the mobile computing device on or off. Amicrophone 722 allows the mobile computing device 710 to convert audiblesounds into an electrical signal that may be digitally encoded andstored in computer-readable memory, or transmitted to another computingdevice. The mobile computing device 710 may also include a digitalcompass, an accelerometer, proximity sensors, and ambient light sensors.

An operating system may provide an interface between the mobilecomputing device's hardware (e.g., the input/output mechanisms and aprocessor executing instructions retrieved from computer-readablemedium) and software. Example operating systems include the ANDROIDmobile device platform; APPLE IPHONE/MAC OS X operating systems;MICROSOFT WINDOWS 7/WINDOWS MOBILE operating systems; SYMBIAN operatingsystem; RIM BLACKBERRY operating system; PALM WEB operating system; avariety of UNIX-flavored operating systems; or a proprietary operatingsystem for computerized devices. The operating system may provide aplatform for the execution of application programs that facilitateinteraction between the computing device and a user.

The mobile computing device 710 may present a graphical user interfacewith the touchscreen 712. A graphical user interface is a collection ofone or more graphical interface elements and may be static (e.g., thedisplay appears to remain the same over a period of time), or may bedynamic (e.g., the graphical user interface includes graphical interfaceelements that animate without user input).

A graphical interface element may be text, lines, shapes, images, orcombinations thereof. For example, a graphical interface element may bean icon that is displayed on the desktop and the icon's associated text.In some examples, a graphical interface element is selectable withuser-input. For example, a user may select a graphical interface elementby pressing a region of the touchscreen that corresponds to a display ofthe graphical interface element. In some examples, the user maymanipulate a trackball to highlight a single graphical interface elementas having focus. User-selection of a graphical interface element mayinvoke a pre-defined action by the mobile computing device. In someexamples, selectable graphical interface elements further oralternatively correspond to a button on the keyboard 704. User-selectionof the button may invoke the pre-defined action.

In some examples, the operating system provides a “desktop” userinterface that is displayed upon turning on the mobile computing device710, activating the mobile computing device 710 from a sleep state, upon“unlocking” the mobile computing device 710, or upon receivinguser-selection of the “home” button 718 c. The desktop graphicalinterface may display several icons that, when selected with user-input,invoke corresponding application programs. An invoked applicationprogram may present a graphical interface that replaces the desktopgraphical interface until the application program terminates or ishidden from view.

User-input may manipulate a sequence of mobile computing device 710operations. For example, a single-action user input (e.g., a single tapof the touchscreen, swipe across the touchscreen, contact with a button,or combination of these at a same time) may invoke an operation thatchanges a display of the user interface. Without the user-input, theuser interface may not have changed at a particular time. For example, amulti-touch user input with the touchscreen 712 may invoke a mappingapplication to “zoom-in” on a location, even though the mappingapplication may have by default zoomed-in after several seconds.

The desktop graphical interface can also display “widgets.” A widget isone or more graphical interface elements that are associated with anapplication program that has been executed, and that display on thedesktop content controlled by the executing application program. Awidget's application program may start with the mobile telephone.Further, a widget may not take focus of the full display. Instead, awidget may only “own” a small portion of the desktop, displaying contentand receiving touchscreen user-input within the portion of the desktop.

The mobile computing device 710 may include one or morelocation-identification mechanisms. A location-identification mechanismmay include a collection of hardware and software that provides theoperating system and application programs an estimate of the mobiletelephone's geographical position. A location-identification mechanismmay employ satellite-based positioning techniques, base stationtransmitting antenna identification, multiple base stationtriangulation, internet access point IP location determinations,inferential identification of a user's position based on search enginequeries, and user-supplied identification of location (e.g., by“checking in” to a location).

The mobile computing device 710 may include other application modulesand hardware. A call handling unit may receive an indication of anincoming telephone call and provide a user capabilities to answer theincoming telephone call. A media player may allow a user to listen tomusic or play movies that are stored in local memory of the mobilecomputing device 710. The mobile telephone 710 may include a digitalcamera sensor, and corresponding image and video capture and editingsoftware. An internet browser may enable the user to view content from aweb page by typing in an addresses corresponding to the web page orselecting a link to the web page.

The mobile computing device 710 may include an antenna to wirelesslycommunicate information with the base station 740. The base station 740may be one of many base stations in a collection of base stations (e.g.,a mobile telephone cellular network) that enables the mobile computingdevice 710 to maintain communication with a network 750 as the mobilecomputing device is geographically moved. The computing device 710 mayalternatively or additionally communicate with the network 750 through aWi-Fi router or a wired connection (e.g., Ethernet, USB, or FIREWIRE).The computing device 710 may also wirelessly communicate with othercomputing devices using BLUETOOTH protocols, or may employ an ad-hocwireless network.

A service provider that operates the network of base stations mayconnect the mobile computing device 710 to the network 750 to enablecommunication between the mobile computing device 710 and othercomputerized devices that provide services 760. Although the services760 may be provided over different networks (e.g., the serviceprovider's internal network, the Public Switched Telephone Network, andthe Internet), network 750 is illustrated as a single network. Theservice provider may operate a server system 752 that routes informationpackets and voice data between the mobile computing device 710 andcomputing devices associated with the services 760.

The network 750 may connect the mobile computing device 710 to thePublic Switched Telephone Network (PSTN) 762 in order to establish voiceor fax communication between the mobile computing device 710 and anothercomputing device. For example, the service provider server system 752may receive an indication from the PSTN 762 of an incoming call for themobile computing device 710. Conversely, the mobile computing device 710may send a communication to the service provider server system 752initiating a telephone call with a telephone number that is associatedwith a device accessible through the PSTN 762.

The network 750 may connect the mobile computing device 710 with a Voiceover Internet Protocol (VoIP) service 764 that routes voicecommunications over an IP network, as opposed to the PSTN. For example,a user of the mobile computing device 710 may invoke a VoIP applicationand initiate a call using the program. The service provider serversystem 752 may forward voice data from the call to a VoIP service, whichmay route the call over the internet to a corresponding computingdevice, potentially using the PSTN for a final leg of the connection.

An application store 766 may provide a user of the mobile computingdevice 710 the ability to browse a list of remotely stored applicationprograms that the user may download over the network 750 and install onthe mobile computing device 710. The application store 766 may serve asa repository of applications developed by third-party applicationdevelopers. An application program that is installed on the mobilecomputing device 710 may be able to communicate over the network 750with server systems that are designated for the application program. Forexample, a VoIP application program may be downloaded from theApplication Store 766, enabling the user to communicate with the VoIPservice 764.

The mobile computing device 710 may access content on the internet 768through network 750. For example, a user of the mobile computing device710 may invoke a web browser application that requests data from remotecomputing devices that are accessible at designated universal resourcelocations. In various examples, some of the services 760 are accessibleover the internet.

The mobile computing device may communicate with a personal computer770. For example, the personal computer 770 may be the home computer fora user of the mobile computing device 710. Thus, the user may be able tostream media from his personal computer 770. The user may also view thefile structure of his personal computer 770, and transmit selecteddocuments between the computerized devices.

A voice recognition service 772 may receive voice communication datarecorded with the mobile computing device's microphone 722, andtranslate the voice communication into corresponding textual data. Insome examples, the translated text is provided to a search engine as aweb query, and responsive search engine search results are transmittedto the mobile computing device 710.

The mobile computing device 710 may communicate with a social network774. The social network may include numerous members, some of which haveagreed to be related as acquaintances. Application programs on themobile computing device 710 may access the social network 774 toretrieve information based on the acquaintances of the user of themobile computing device. For example, an “address book” applicationprogram may retrieve telephone numbers for the user's acquaintances. Invarious examples, content may be delivered to the mobile computingdevice 710 based on social network distances from the user to othermembers. For example, advertisement and news article content may beselected for the user based on a level of interaction with such contentby members that are “close” to the user (e.g., members that are“friends” or “friends of friends”).

The mobile computing device 710 may access a personal set of contacts776 through network 750. Each contact may identify an individual andinclude information about that individual (e.g., a phone number, anemail address, and a birthday). Because the set of contacts is hostedremotely to the mobile computing device 710, the user may access andmaintain the contacts 776 across several devices as a common set ofcontacts.

The mobile computing device 710 may access cloud-based applicationprograms 778. Cloud-computing provides application programs (e.g., aword processor or an email program) that are hosted remotely from themobile computing device 710, and may be accessed by the device 710 usinga web browser or a dedicated program. Example cloud-based applicationprograms include GOOGLE DOCS word processor and spreadsheet service,GOOGLE GMAIL webmail service, and PICASA picture manager.

Mapping service 780 can provide the mobile computing device 710 withstreet maps, route planning information, and satellite images. Anexample mapping service is GOOGLE MAPS. The mapping service 780 may alsoreceive queries and return location-specific results. For example, themobile computing device 710 may send an estimated location of the mobilecomputing device and a user-entered query for “pizza places” to themapping service 780. The mapping service 780 may return a street mapwith “markers” superimposed on the map that identify geographicallocations of nearby “pizza places.”

Turn-by-turn service 782 may provide the mobile computing device 710with turn-by-turn directions to a user-supplied destination. Forexample, the turn-by-turn service 782 may stream to device 710 astreet-level view of an estimated location of the device, along withdata for providing audio commands and superimposing arrows that direct auser of the device 710 to the destination.

Various forms of streaming media 784 may be requested by the mobilecomputing device 710. For example, computing device 710 may request astream for a pre-recorded video file, a live television program, or alive radio program. Example services that provide streaming mediainclude YOUTUBE and PANDORA.

A micro-blogging service 786 may receive from the mobile computingdevice 710 a user-input post that does not identify recipients of thepost. The micro-blogging service 786 may disseminate the post to othermembers of the micro-blogging service 786 that agreed to subscribe tothe user.

A search engine 788 may receive user-entered textual or verbal queriesfrom the mobile computing device 710, determine a set ofinternet-accessible documents that are responsive to the query, andprovide to the device 710 information to display a list of searchresults for the responsive documents. In examples where a verbal queryis received, the voice recognition service 772 may translate thereceived audio into a textual query that is sent to the search engine.

These and other services may be implemented in a server system 790. Aserver system may be a combination of hardware and software thatprovides a service or a set of services. For example, a set ofphysically separate and networked computerized devices may operatetogether as a logical server system unit to handle the operationsnecessary to offer a service to hundreds of individual computingdevices.

In various implementations, operations that are performed “in response”to another operation (e.g., a determination or an identification) arenot performed if the prior operation is unsuccessful (e.g., if thedetermination was not performed). Features in this document that aredescribed with conditional language may describe implementations thatare optional. In some examples, “transmitting” from a first device to asecond device includes the first device placing data into a network forreceipt by the second device, but may not include the second devicereceiving the data. Conversely, “receiving” from a first device mayinclude receiving the data from a network, but may not include the firstdevice transmitting the data.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made without departingfrom the spirit and scope of this disclosure. Accordingly, otherimplementations are within the scope of the following claims.

1. A computer-implemented augmented reality method, comprising:receiving one or more indications, entered on a mobile computing deviceby a user of the mobile computing device, of a distance range fordetermining items to display with an augmented reality application, thedistance range representing geographic distance from a base point wherethe mobile computing device is located; selecting, from items in acomputer database, one or more items that are located within thedistance range from the mobile computing device entered by the user; andproviding data for representing labels for the selected one or moreitems on a visual display of the mobile computing device, the labelscorresponding to the selected items, and the items corresponding togeographical features that are within the distance range as measure fromthe mobile computing device.
 2. The method of claim 1, wherein theindications comprise user input of a pair of icons on a slider control,and wherein the pair of icons define a space therebetween thatcorresponds in size to the distance range.
 3. The method of claim 1,further comprising determining a field of view for the augmented realityapplication using a compass on the mobile computing device, andselecting for display a subset of the one or more items that are withinthe field of view.
 4. The method of claim 3, wherein the field of viewrepresents a direction in which a camera on the mobile computing deviceis pointed.
 5. The method of claim 1, further comprising generating datathat defines a location for display of each item on the display, whereinthe location corresponds to a distance of the item from the mobilecomputing device.
 6. The method of claim 1, wherein the data forrepresenting the selected one or more items represents locations on thedisplay for displaying the items, the locations being selected tocorrespond to distances from the mobile computing device of the objectsthat the labels represent.
 7. The method of claim 1, wherein theindications are received from the mobile computing device at a centralserver system, the one or more items are selected by the central serversystem, and the data for representing labels is provided by the centralserver system.
 8. The method of claim 7, wherein the central serversystem provides data for representing labels for geographic features ina zone surrounding the mobile computing device, for the mobile computingdevice to select a sub-set of items within the zone by determining adirection in which the mobile computing device is aimed.
 9. The methodof claim 1, wherein the one or more indications of the distance rangecomprise a user selection of a range endpoint, and further comprisingdetermining the distance range to be items closer than the rangeendpoint or further than the range endpoint from the mobile computingdevice.
 10. The method of claim 1, further comprising using the one ormore indications of the distance range to create corresponding one ormore clipping planes, and using the clipping claims to filter items inthe computer database.
 11. A tangible, non-transitory recordable mediumhaving recorded thereon instructions, that when executed, performactions comprising: receiving on a computing device one or moreindications, entered a user of the computing device, of a distance rangefor determining items to display with an augmented reality application,the distance range representing geographic distance from a base pointwhere the mobile computing device is located; transmitting dataidentifying the distance range to a server system remote from thecomputing device receiving information about one or more items, selectedfrom among a group of items in a computer database at the server system,that are located within the distance range from the mobile computingdevice entered by the user; and providing a display of an augmentedreality presentation, where the presentation is augmented with labelsfor items represented in the presentation that are features that arewithin the distance range as measure from the mobile computing device.12. The tangible, non-transitory recordable medium of claim 11, whereinthe indications comprise user input of a pair of icons on a slidercontrol, and wherein the pair of icons define a space therebetween thatcorresponds in size to the distance range.
 13. The tangible,non-transitory recordable medium of claim 11, wherein the actionsfurther comprise determining a field of view for the augmented realityapplication using a compass on the mobile computing device, andselecting for display a subset of labels for the items that are withinthe field of view.
 14. The tangible, non-transitory recordable medium ofclaim 11, wherein the received information includes data forrepresenting labels for geographic features in a zone surrounding thecomputing device, and wherein the actions further comprise selecting,with the computing device, a sub-set of items within the zone bydetermining a direction in which the computing device is aimed.
 15. Acomputer-implemented augmented reality system, comprising: an interfaceprogrammed to receive user input that defines a distance range fordetermining items to display with an augmented reality application, thedistance range representing geographic distance from a basepoint for themobile computing device; a computer database that stores descriptiveitems that represent geographical features that are correlated togeographical locations; a filter to select from the descriptive items, agroup of items that are within the defined distance range, indiscrimination to items that are not within the defined distance range;and an augmented reality application on a mobile computing deviceprogrammed to display annotations defined by the group of items and tosuperimpose the annotations over an image of a geographical area on acomputing device.
 16. The system of claim 15, wherein the augmentedreality application is programming to generate, via the interface, apair of user-movable icons on a slider control, and wherein the pair oficons define a space there between that corresponds in size to thedistance range.
 17. The system of claim 15, further comprising acompass, and wherein the augmented reality application is programmed touse information from the compass to select for display, annotations thatare in a direction that a camera on the mobile computing device ispointed.
 18. The system of claim 15, wherein the augmented realityapplication is programmed to position the annotations on a displayaccording to a distance of each item that corresponds to an annotationfrom the user's position in the augmented reality application.
 19. Thesystem of claim 15, wherein the augmented reality application is locatedon the mobile device, and the filter is located on a server system thatis remote from the mobile device.
 20. The system of claim 19, whereinthe server system is programmed to provide data for representing labelsfor geographic features in a zone surrounding the mobile computingdevice, and the augmented reality application is programmed to select asub-set of items within the zone, in a directed that the user is facingin the augmented reality application.
 21. A computer-implementedaugmented reality system, comprising: an interface programmed to receiveuser input that defines a distance range for determining items todisplay with an augmented reality application, the distance rangerepresenting geographic distance from a basepoint for the mobilecomputing device; a computer database that stores descriptive items thatrepresent geographical features that are correlated to geographicallocations; means for selecting one or more of the descriptive items thatfall within the geographic distance, in discrimination to items that donot fall within the geographic distance.
 22. The system of claim 21,further comprising means for selecting, from the one or more of thedescriptive items, items that are located in a direction from the userin a virtual space of an augmented reality application that correspondsto a direction that the user is facing in the virtual space.